#ifndef DRAW_CHART_H
#define DRAW_CHART_H

#include <QObject>
#include <QString>

class QChartView;
class QChart;
class QWidget;

class DrawChart : public QObject
{
    Q_OBJECT

public:
    explicit DrawChart(QObject *parent = nullptr);

    // 数据解析和图表绘制函数
    void parseData(const QString &data);
    void drawS_BMSChart(QWidget *parentWidget);
    void drawBMSFChart(QWidget *parentWidget);
    void drawAllCharts(QWidget *parentWidget);
    void saveChartsAsImage(QWidget *parent);
    void clearCharts(QWidget *parentWidget);

private:
    struct S_BMSData {
        int timestamp;
        QChar type;
        QString level;
        int id;
        QVector<int> values;
    };

    struct BMSFData {
        int timestamp;
        QVector<double> values;
    };

    QVector<S_BMSData> sBmsData;
    QVector<BMSFData> bmsFData;

    void parseS_BMSData(const QString &line);
    void parseS_BMSDataFallback(const QString &line); // 新增：备用解析函数
    void parseBMSFData(const QString &line);

    QChartView* createS_BMSChart();
    QChartView* createBMSFChart();
    QChartView* createChartView(QChart *chart);

    // 辅助函数
    void setupChartLayout(QWidget *parentWidget, QChartView *chartView, const QString &title);

signals:
    void chartDrawn();
    void errorOccurred(const QString &error);
};

#endif // DRAW_CHART_H
